﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Xant.FlowEngine.Interface
{
    /// <summary>
    /// 职员-机构关系类，描述职员在组织机构中的任职
    /// </summary>
    public interface IStaffMember
    {
        /// <summary>
        /// 为了提供更好的兼容性，在接口中将主键声明为object类型，实际实现可以采用int、guid、string等类型
        /// </summary>
        object Id { get; }

        /// <summary>
        /// 所属组织机构
        /// </summary>
        IOrganization Organization { get; }

        /// <summary>
        /// 关联用户账号
        /// </summary>
        IStaff Staff { get; }

        /// <summary>
        /// 该员工所直接归属的公司
        /// <remarks>例如员工在组织机构树中属于某个部门，那么通过此属性将向上寻找第一个类别为“公司”的上级组织</remarks>
        /// </summary>
        IOrganization BelongCorporation { get; }

        /// <summary>
        /// 该员工所直接归属的部门
        /// <remarks>如果该员工在组织机构树中直接属于某个公司，则此属性返回null</remarks>
        /// </summary>
        IOrganization BelongDepartment { get; }

        /// <summary>
        /// 工作岗位
        /// </summary>
        IPosition Position { get; }

        /// <summary>
        /// 职级
        /// </summary>
        //IPostRank Rank { get; }//暂不实现

        /// <summary>
        /// 是否主岗
        /// <remarks>一个用户只能有一个主岗，其他为副岗</remarks>
        /// </summary>
        bool IsMainPosition { get; }

        /// <summary>
        /// 员工排列次序，同一组织机构中此数值越小排得越靠前
        /// </summary>
        int Priority { get; }

    }
}
